#include <iostream>
using namespace std;

namespace CL_FFM_COPY {
	namespace bad {
	
		class C {
			char* data;
			C& operator=(const C&) { return *this; }
		public:
			C() { data = new char[10]; }
			~C() {
				cout << "Calling delete for " << (void*)data << endl;
				delete[] data;

			}

		};
		int main() {
			C c1;
			C c2 = c1;
			return 1;
		}

	
	}

	namespace good_1 {
	
		class C {
			// ...
			char* data;
			C(const C& src) {
				data = new char[10];
				memcpy(data, src.data, 10);
			}
			// ...
		};
	
	}

	namespace good_2 {

		class C {
			// ...
		private:
			C(const C& src) { /* do not create copies */ }
			// ...
		};
	}


}